/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.myapp.model.DAO.Comments;

import com.myapp.model.DAO.HibernateUtil;
import com.myapp.model.comentarios.Comentarios;
import com.myapp.model.ejercicios.Ejercicios;
import com.myapp.model.estados.Estados;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author Tarde
 */
public class CommentsDao {

    Comentarios com = new Comentarios();
    /**
     * Metodo que devueve un comentario por su id
     * @param String idComentarios
     * @return Comentarios
     */
    public Comentarios listCommentById(String idComentarios) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        
        Integer idComentario = Integer.parseInt(idComentarios);
        try {
            session.beginTransaction();


            com = (Comentarios) session.createCriteria(Comentarios.class).
                    add(Restrictions.eq("idcomentario", idComentario)).uniqueResult();
            session.getTransaction().commit();

        } catch (HibernateException err) {
            session.getTransaction().rollback();
        }
        return com;

    }
    /**
     * Metodo que actualiza el comentario a estado Reportado
     * @param Comentarios com 
     */
    public void reportarComment(Comentarios com) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Estados est = new Estados();
        byte e = 5;//Estado de "Reportado" en la tabla estados de la base de datos
        est.setIdestado(e);
        com.setEstados(est);

        try {
            session.beginTransaction();
            session.update(com);
            session.getTransaction().commit();

        } catch (HibernateException err) {
            session.getTransaction().rollback();
        }

    }
    /**
     * Metodo para insertar un comentario en un ejercicio
     * @param Comentarios com 
     */
    public void insertarComentarioEjercicio(Comentarios com) {
        List comenList = null;
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            session.save(com);
            session.getTransaction().commit();

        } catch (HibernateException err) {
            System.out.print(err);
            session.getTransaction().rollback();
        }

    }
    
    /**
     * Metodo que lista los comentarios por el id del ejercicio
     * @param Ejercicios idEj
     * @return List 
     */
    public List<Comentarios> listCommentByIdExercise(Ejercicios idEj) {
        
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        
        List<Comentarios> lista = null;
        
        try {
            session.beginTransaction();


            lista = (List<Comentarios>) session.createCriteria(Comentarios.class).
                    add(Restrictions.eq("ejercicios", idEj)).list();
            session.getTransaction().commit();

        } catch (HibernateException err) {
            session.getTransaction().rollback();
        }
        
        return lista;

    }
    /**
     * Metodo para eliminar un comentario marcandolo como Desactivado
     * @param Comentarios com 
     */
    public void eliminarComentario(Comentarios com) {
        
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        
        Estados est = new Estados();
        
        byte e = (byte) 4;//Estado de "Desactivado" en la tabla estados de la base de datos
        
        est.setIdestado(e);
        
        com.setEstados(est);

        try {
            session.beginTransaction();
            session.update(com);
            session.getTransaction().commit();

        } catch (HibernateException err) {
            session.getTransaction().rollback();
        }

    }
}
